package com.weijian.dal.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.weijian.dal.enums.CourseLevel;
import com.weijian.dal.enums.CourseStatus;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 课程实体类 - 支持库存管理
 */
@Data
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@TableName("course")
@NoArgsConstructor
@AllArgsConstructor
public class Course extends BaseDO {

    private static final long serialVersionUID = 1L;

    /**
     * 课程ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 课程标题
     */
    private String title;

    /**
     * 课程描述
     */
    private String description;

    /**
     * 课程难度等级
     */
    private CourseLevel level;

    /**
     * 课程状态
     */
    private CourseStatus status;

    /**
     * 课程价格
     */
    private BigDecimal price;

    /**
     * 课程时长（分钟）
     */
    private Integer duration;

    /**
     * 封面图片URL
     */
    private String coverImage;

    /**
     * 讲师ID
     */
    private Long instructorId;

    /**
     * 课程库存数量
     */
    private Integer stock;

    /**
     * 已售数量
     */
    private Integer soldCount;

    /**
     * 单人最大购买数量
     */
    @TableField("max_purchase_per_user")
    private Integer maxPurchasePerUser;

    /**
     * 是否限量销售：0-不限量 1-限量
     */
    @TableField("is_limited_stock")
    private Boolean limitedStock;

    /**
     * 开售时间
     */
    @TableField("sale_start_time")
    private LocalDateTime saleStartTime;

    /**
     * 停售时间
     */
    @TableField("sale_end_time")
    private LocalDateTime saleEndTime;

    /**
     * 是否在售：0-停售 1-在售
     */
    @TableField("is_on_sale")
    private Integer onSale;
}